2023/12/231331字符

计算数组中,最大连续增长子序列的长度

// 1     2     3     4     1     2     3     4     5     1     2     3
// 1     2     3     4                                   1     2     3
//                         1     2     3     4     5
var arr = [1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 7, 9, 15, 157];

function getMaxLenth (arr) {
    var addNum = 1, len = null;
    for (var i = 1; i < arr.length; i ++) {
        if (arr[i] > arr[i - 1]) {
            addNum ++;
        }else {
            len = addNum > len ? addNum : len;
            addNum = 1;  // 记录下个序列的增长次数,需要重新开始
        }
    }
    len = addNum > len ? addNum : len;  // 保证代码如果不走else的时候,len值也会再次计算一下
    return len;
}
getMaxLenth(arr);  //--> 5

接着来优化一下

function getMaxLenth (arr) {
    var addNum = 1, len = null;
    // 循环会走一次,走到 length。而 arr[length] = undefined。那if条件必然为 false。所以 else 最后会再走一次
    for (var i = 1; i < arr.length + 1; i ++) {
        if (arr[i] > arr[i - 1]) {
            addNum ++;
        }else {
            len = addNum > len ? addNum : len;
            addNum = 1;
        }
    }
    return len;
}